#!/usr/bin/env python
#coding=utf-8

class ClassMember:
	className = 'oldboy'
	def __init__(self, name):	#对象方法，第一个参数是对象
		self.name = name

	def tell(self):
		print ClassMember.className, self.name

	#这里提供了一个静态方法，而不是类的方法，注意区分,如果不加装饰器直接被底下调用，会报错
	@staticmethod	#static方法没有第一个参数
	def ChangeClassName(name):
		ClassMember.className = name
		return ClassMember.className

	#增加一个新的改类名的方法，类方法，第一个参数是类名
	@classmethod
	def ChangeClsName(cls, name='alex'):
		ClassMember.className = name
		print ClassMember.className
		return ClassMember.className

def test():
	a = ClassMember('aaa')
	#查看对象变量
	a.tell()

	#这里调用上面的静态方法，直接调用会报错，需要装饰
	ClassMember.ChangeClassName('alex')
	ClassMember.ChangeClassName('Mingmings')
	#查看类变量和对象变量
	a.tell()

	ClassMember.ChangeClsName('alex')
	a.tell()

if __name__ == '__main__':
	test()